﻿/**
 * 使用 Ext.window.Window 来显示记录，策略模式的一个具体实现。
 */
Ext.define('Happy.table.action.show.strategy.Window', {

    constructor: function (config) {
        var me = this;

        config = config || {};

        Ext.applyIf(me, config);
    },

    /**
     * 显示容器。
     *
     * @param {Ext.panel.Table} table
     * @param {Ext.data.Model} record
     * @return {Ext.window.Window}
     */
    show: function (table, record) {
        var me = this;

        return me.createWindow(record).show();
    },

    /**
    * 创建窗口。
    * 
     * @private
     * @param {Ext.data.Model} record
     * @return {Ext.window.Window}
    */
    createWindow: function () {
        var me = this;

        var formConfig = Ext.apply({
            xtype: me.formType,
        }, me.formConfig || {});

        var windowConfig = Ext.apply({
            xtype: 'window',
            layout: 'fit',
            modal: true,
            title: me.title,
            items: formConfig
        }, me.windowConfig || {});

        return Ext.widget(windowConfig);
    }
});